package com.ruoyi.sycs.service;

import com.ruoyi.sycs.domain.BsRule;
import com.ruoyi.sycs.domain.vo.BsRuleVo;
import com.ruoyi.sycs.domain.bo.BsRuleBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 编号规则设置Service接口
 *
 * @author zyb
 * @date 2024-04-24
 */
public interface IBsRuleService {

    /**
     * 查询编号规则设置
     */
    BsRuleVo queryById(Long ruleId);

    /**
     * 查询编号规则设置列表
     */
    TableDataInfo<BsRuleVo> queryPageList(BsRuleBo bo, PageQuery pageQuery);

    /**
     * 查询编号规则设置列表
     */
    List<BsRuleVo> queryList(BsRuleBo bo);

    /**
     * 新增编号规则设置
     */
    Boolean insertByBo(BsRuleBo bo);

    /**
     * 修改编号规则设置
     */
    Boolean updateByBo(BsRuleBo bo);

    /**
     * 校验并批量删除编号规则设置信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    BsRuleVo getRule(BsRuleBo bo);

    /**
     * 根据试验室和试验类型获取对应的编号规则示例
     * @param bo
     * @return
     */
    BsRuleVo getRuleSl(BsRuleBo bo);

    /**
     * 根据编号规则生成编号
     * @param bo
     * @return
     */
    BsRuleVo getRuleRes(BsRuleBo bo);
}
